package com.dmgis.hndz.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dmgis.hndz.pojo.SMSRecordManagement;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface SMSRecordManagementMapper extends BaseMapper<SMSRecordManagement> {

    /**
     * 新增
     *
     * @author pengdongdong
     * @date 2024/11/11
     **/
    int insertSMSRecordManagement(SMSRecordManagement sMSRecordManagement);

    /**
     * 刪除
     *
     * @author pengdongdong
     * @date 2024/11/11
     **/
    int deleteSMSRecordManagement(String[] ids);

    /**
     * 更新
     *
     * @author pengdongdong
     * @date 2024/11/11
     **/
    int updateSMSRecordManagement(SMSRecordManagement sMSRecordManagement);

    /**
     * 查询 根据主键 id 查询
     *
     * @author pengdongdong
     * @date 2024/11/11
     **/
    SMSRecordManagement selectSMSRecordManagementById(String id);

    /**
     * 查询 分页查询
     *
     * @author pengdongdong
     * @date 2024/11/11
     **/
    List<SMSRecordManagement> selectSMSRecordManagementList(SMSRecordManagement sMSRecordManagement);

    /**
     * 统计短信数
     *
     * @param dateType  1：本年，2：本月，3：本日 4：本周
     * @param code      行政编码
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    Map<String, Integer> selectStatisticsSMS(@Param("dateType") Integer dateType,
                                             @Param("code") String code,
                                             @Param("startTime") String startTime,
                                             @Param("endTime") String endTime);

    /**
     * 统计短信期数（每发送一次短信算一期）
     *
     * @param dateType  1：本年，2：本月，3：本日 4：本周
     * @param code      行政编码
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    Map<String, Integer> selectStatisticsStages(@Param("dateType") Integer dateType,
                                                @Param("code") String code,
                                                @Param("startTime") String startTime,
                                                @Param("endTime") String endTime);

    /**
     * 统计呼叫人数（每发送一次短信算一期）
     *
     * @param dateType  1：本年，2：本月，3：本日 4：本周
     * @param code      行政编码
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    Integer[] selectCallNum(@Param("dateType") Integer dateType,
                            @Param("code") String code,
                            @Param("startTime") String startTime,
                            @Param("endTime") String endTime);

    /**
     * 统计省级级直辖市级呼叫人数
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    List<Map<String, String>> selectCallNumCity(@Param("startTime") String startTime,
                                                @Param("endTime") String endTime);

    /**
     * 统计市级直辖下县级呼叫人数
     *
     * @param code      行政编码
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    List<Map<String, String>> selectCallNumCounty(@Param("code") String code,
                                                  @Param("startTime") String startTime,
                                                  @Param("endTime") String endTime);


    /**
     * 统计县级呼叫人数
     *
     * @param code      行政编码
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    List<Map<String, String>> selectCallNumCountyByCode(@Param("code") String code,
                                                        @Param("startTime") String startTime,
                                                        @Param("endTime") String endTime);

}
